import { get, post } from '@/utils/request'

/**
 * 用户管理相关接口
 */

// 用户信息类型
export interface UserInfo {
  id: number
  username: string
  email: string
  phone: string
  role: string
  studentNumber: string
  createdAt: string
}

// 分页结果类型
export interface PageResult<T> {
  records: T[]
  total: number
  size: number
  current: number
  pages: number
}

// 用户列表查询参数
export interface UserListParams {
  current?: number
  size?: number
  keyword?: string
  role?: string
  [key: string]: unknown
}

// 用户更新请求
export interface UserUpdateRequest {
  userId: number
  username: string
  phone: string
  email?: string
  role: string
  [key: string]: unknown
}

// 用户审核请求
export interface UserApprovalRequest {
  userId: number
  approved: boolean
  remark: string
  [key: string]: unknown
}

// 教师管理学生相关接口

// 教师更新学生信息请求
export interface TeacherUpdateStudentRequest {
  userId: number
  username: string
  email?: string
  phone: string
  [key: string]: unknown
}

// 控制台数据类型
export interface TrendItem {
  date: string
  count: string
}

export interface ConsoleData {
  rehabPlanCompleteTrend: TrendItem[]
  studentCount: string
  rehabPlanTrend: TrendItem[]
  totalUsers: string
  offlineAssessmentTrend: TrendItem[]
  todayNewUsers: string
  pendingCount: string
  userRegisterTrend: TrendItem[]
  onlineAssessmentTrend: TrendItem[]
  adminCount: string
  teacherCount: string
}

/**
 * 分页获取用户列表
 * @param params 查询参数
 * @returns 用户列表分页数据
 */
export const getUserList = (params: UserListParams) => {
  return get<PageResult<UserInfo>>('/admin/user/list', params)
}

/**
 * 获取待审核的管理员和教师账号列表
 * @returns 待审核用户列表
 */
export const getPendingUsers = () => {
  return get<UserInfo[]>('/admin/user/pending')
}

/**
 * 审核用户账号
 * @param data 审核信息
 * @returns 审核结果
 */
export const approveUser = (data: UserApprovalRequest) => {
  return post<boolean>('/admin/user/approve', data)
}

/**
 * 更新用户信息
 * @param data 用户信息
 * @returns 更新结果
 */
export const updateUser = (data: UserUpdateRequest) => {
  return post<boolean>('/admin/user/update', data)
}

/**
 * 重置用户密码
 * @param userId 用户ID
 * @returns 新密码
 */
export const resetUserPassword = (userId: number) => {
  return post<string>('/admin/user/reset-password', { userId })
}

/**
 * 删除用户
 * @param userId 用户ID
 * @returns 删除结果
 */
export const deleteUser = (userId: number) => {
  return post<boolean>('/admin/user/delete', { userId })
}

/**
 * 教师获取学生列表
 * @param params 查询参数
 * @returns 学生列表分页数据
 */
export const getTeacherStudentList = (params: UserListParams) => {
  return get<PageResult<UserInfo>>('/admin/teacher/student/list', params)
}

/**
 * 教师更新学生信息
 * @param data 学生信息
 * @returns 更新结果
 */
export const updateTeacherStudent = (data: TeacherUpdateStudentRequest) => {
  return post<boolean>('/admin/teacher/student/update', data)
}

/**
 * 教师删除学生账户
 * @param userId 学生用户ID
 * @returns 删除结果
 */
export const deleteTeacherStudent = (userId: number) => {
  return post<boolean>('/admin/teacher/student/delete', { userId })
}

/**
 * 教师重置学生密码
 * @param userId 学生用户ID
 * @returns 新密码
 */
export const resetTeacherStudentPassword = (userId: number) => {
  return post<string>('/admin/teacher/student/reset-password', { userId })
}

/**
 * 控制台数据
 */
export const getConsoleData = () => {
  return get<ConsoleData>('/admin/dashboard/summary')
}
